objects = compresor.o descompresor.o const.o cronometro.o \
		  contenedor-nombre-archivo.o rle-encoder.o

gui-objects = layout.o boton-elegir-archivos.o

cli-objects = parser.o

includes = -I/usr/include/atkmm-1.6 -I/usr/include/gtkmm-3.0 -I/usr/lib/gtkmm-3.0/include -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gio-unix-2.0/ -I/usr/include/gdkmm-3.0 -I-pthread -Ipthread -I/usr/include/giomm-2.4 -I/usr/lib/x86_64-linux-gnu/giomm-2.4/include -I/usr/include/pangomm-1.4 -I/usr/lib/x86_64-linux-gnu/pangomm-1.4/include -I/usr/include/gtk-3.0 -I/usr/include/cairomm-1.0 -I/usr/lib/x86_64-linux-gnu/cairomm-1.0/include -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gtk-3.0/unix-print -I/usr/include/atk-1.0 -I/usr/include/glibmm-2.4 -I/usr/lib/x86_64-linux-gnu/glibmm-2.4/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/sigc++-2.0 -I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include -I/usr/include/pango-1.0 -I/usr/lib/gdkmm-3.0/include

flags =  -O0 -g3 -Wall -Wextra -pedantic -c -fmessage-length=0 -MMD -MP

libs = -lsigc-2.0 -lgobject-2.0 -lglib-2.0 -lgtkmm-3.0  -latkmm-1.6  -lgdkmm-3.0 -lgiomm-2.4 -lpangomm-1.4 -lgtk-3  -lglibmm-2.4 -lcairomm-1.0 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo

help:
	@echo make gui para compilar programa con interfaz grafica
	@echo make cli para compilar programa por linea de comandos
	@echo make test-errores para testear programa
	@echo make test-eficiencia para testear velocidad de programa

gui: main-gui.o $(gui-objects) $(objects)
	g++ -o gui main-gui.o $(gui-objects) $(objects) $(libs)
cli: main-cli.o $(cli-objects) $(objects)
	g++ -o cli main-cli.o $(cli-objects) $(objects) && \
	cp cli tests/errores/cli && \
    cp cli tests/eficiencia/cli
main-gui.o: main-gui.cpp layout.h rle-encoder.h
	g++ -c $(includes) $(flags) main-gui.cpp 
main-cli.o: main-cli.cpp compresor.h descompresor.h cronometro.h parser.h rle-encoder.h
	g++ -c main-cli.cpp $(flags)
rle-encoder.o: rle-encoder.cpp rle-encoder.h compresor.h descompresor.h contenedor-nombre-archivo.h const.cpp
	g++ -c rle-encoder.cpp $(flags)
compresor.o: compresor.cpp compresor.h contenedor-nombre-archivo.h const.cpp
	g++ -c compresor.cpp $(flags)
descompresor.o: descompresor.cpp descompresor.h contenedor-nombre-archivo.h \
				const.cpp
	g++ -c descompresor.cpp $(flags)
const.o: const.cpp
	g++ -c const.cpp $(flags)
cronometro.o: cronometro.cpp cronometro.h
	g++ -c cronometro.cpp $(flags)
parser.o: parser.cpp parser.h const.cpp
	g++ -c parser.cpp $(flags)
layout.o: layout.cpp layout.h boton-elegir-archivos.h const.cpp
	g++ $(includes) -c layout.cpp $(flags)
contenedor-nombre-archivo.o: contenedor-nombre-archivo.cpp \
							 contenedor-nombre-archivo.h
	g++ -c contenedor-nombre-archivo.cpp $(flags)
boton-elegir-archivos.o: boton-elegir-archivos.cpp boton-elegir-archivos.h contenedor-nombre-archivo.h const.cpp
	g++ $(includes) -c boton-elegir-archivos.cpp $(flags)

clean:
	rm gui cli main-gui.o main-cli.o procesado.rle $(objects) $(gui-objects) \
	$(cli-objects)

test-errores: 
	cd tests/errores && \
	sh errores.sh
test-eficiencia: 
	cd tests/eficiencia && \
	sh eficiencia.sh
	
.PHONY: clean test-eficiencia test-errores
